
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;

/**
 * Clase que implementa una ventana para nuevos puntajes.
 * @author Matías Díaz
 * @author Sergio Flores
 */
public class JNewPuntaje extends JFrame implements ActionListener
{

    private TextField input;
    private Button boton;
    private JCronometro cronos;
    private JLabel label;

    /**
     * Contructor de la clase, que inicializa todos los parametros
     * para crear una instancia de nuevo puntaje.
     *
     * @param crono corresponde al cronometro, ya que para
     * agregar un nuevo puntaje, se debe anexar
     * el tiempo.
     */
    public JNewPuntaje ( JCronometro crono )
    {
        super ( CommandName.NAME_NEW_SCORES );
        super.setIconImage ( new ImageIcon ( CommandName.ICON_TETRAVEX ).getImage () );
        super.setVisible ( true );
        super.setDefaultCloseOperation ( DISPOSE_ON_CLOSE );
        super.setSize ( 300 , 100 );
        super.setLocation ( 250 , 200 );
        super.setLayout ( new BorderLayout () );
        this.label = new JLabel ( CommandName.SCORE_INSTRUCCIONES );
        this.input = new TextField ( 20 );
        this.input.setLocation ( 50 , 50 );
        this.boton = new Button ( CommandName.BOTON_SCORES );
        this.boton.setLocation ( 130 , 50 );
        this.boton.setVisible ( true );
        this.boton.addActionListener ( this );
        this.boton.setSize ( 50 , 20 );
        this.input.addActionListener ( this );
        super.add ( label , BorderLayout.PAGE_START );
        super.add ( input , BorderLayout.CENTER );
        super.add ( boton , BorderLayout.SOUTH );
        this.cronos = crono;

        super.setResizable ( false );
    }

    /**
     * Metodo que permite agregar un nuevo nombre
     * para asignarle dicho puntaje.
     *
     * @param cadena corresponde al nombre a quien se
     * le asignará el puntaje nuevo.
     */
    public void getString ( String cadena )
    {
        super.setVisible ( false );
        String string = new String ( "" );
        JWriter writer = new JWriter ( CommandName.TEXT_FILE_SCORES , string.concat ( cadena ).concat ( "            " ).concat ( this.cronos.retornaTiempoDos ().getText () ) );
    }

    /**
     * Metodo que permite gestionar los eventos,
     * en este caso nos permite gestionar cuando
     * se agrega un nuevo nombre.
     *
     * @param e corresponde al evento.
     */
    @Override
    public void actionPerformed ( ActionEvent e )
    {
        getString ( this.input.getText () );
    }
}
